package de.fhin.mas;

/**
 * Dieses Enum bildet die Ereignisse wie in der Kommunikationstabelle
 * spezifiziert ab.
 * <p>
 * Muss von allen Agenten verwendet werden, um die <tt>Conversation-ID</tt>
 * empfangender Messages korrekt auszuwerten.
 * 
 * @author Alexander Weickmann
 * @author Thomas Schlaefer
 */
public enum MASEvents {

	/** Manager-Ereignis: Neuer Suchauftrag. */
	NEW_ORDER("new_order"),

	/** Manager-Ereignis: Aktionen fortsetzen. */
	RESUME("resume"),

	/** Manager-Ereignis: Auftrag abbrechen und zu Position fahren. */
	ABORT_AND_GO_TO("abort_and_go_to"),

	/** Sucher-Ereignis: Ortswechsel erforderlich. */
	CHANGE_OF_LOCATION_NECESSARY("change_of_location_necessary"),

	/** Sucher-Ereignis: Zielobjekt gefunden. */
	TARGET_FOUND("target_found"),

	/** Sucher-Ereignis: Umgebungserfassung abgeschlossen. */
	ENVIRONMENT_SCAN_FINISHED("environment_scan_finished"),

	/** Sucher-Ereignis: Die Zielsuche wurde abgebrochen. */
	TARGET_SEARCH_CANCELED("target_search_canceled"),

	/** Sucher-Ereignis: Die Zielsuche wurde pausiert. */
	TARGET_SEARCH_PAUSED("target_search_paused"),

	/** Sucher-Ereignis: Die Zielsuche wurde fortgesetzt. */
	TARGET_SEARCH_RESUMED("target_search_resumed"),

	/** Sucher-Ereignis: Zielsuche wurde gestartet. */
	TARGET_SEARCH_STARTED("target_search_started"),

	/** Sucher-Ereignis: Der Umgebungsscan wurde aktiviert. */
	ENVIRONMENT_SCAN_STARTED("environment_scan_started"),

	/** Sucher-Ereignis: Der Umgebungsscan wurde deaktiviert. */
	ENVIRONMENT_SCAN_CANCELED("environment_scan_canceled"),

	/** Navigator-Ereignis: Bewegung der Plattform notwendig. */
	MOVEMENT_OF_PLATFORM_NECESSARY("movement_of_platform_necessary"),

	/** Navigator-Ereignis: Ziel erreicht: Objekt. */
	TARGET_OBJECT_REACHED("target_object_reached"),

	/** Navigator-Ereignis: Ziel erreicht: Lager. */
	STORAGE_REACHED("storage_reached"),

	/** Navigator-Ereignis: Ziel erreicht: Ladestation. */
	CHARGING_STATION_REACHED("charging_station_reached"),

	/** Greifer-Ereignis: Objekt wird aufgenommen. */
	LOADING_OBJECT("loading_object"),

	/** Greifer-Ereignis: Objekt aufgenommen. */
	OBJECT_LOADED("object_loaded"),

	/** Greifer-Ereignis: Objekt wird abgelegt. */
	UNLOADING_OBJECT("unloading_object"),

	/** Greifer-Ereignis: Objekt abgelegt. */
	OBJECT_UNLOADED("object_unloaded"),

	/** Greifer-Ereignis: Objekt außer Reichweite */
	OBJECT_OUT_OF_REACH("object_out_of_reacht"),

	/** Greifer-Ereignis: Objekt verloren. */
	OBJECT_LOST("object_lost"),

	/** Greifer-Ereignis: Objekt nicht greifbar. */
	OBJECT_UNSEIZABLE("object_unseizable"),

	/** Ereignis: Agent zeigt Status an. */
	INDICATE_AGENT_STATUS("indicate_agent_status"),

	/** Ereignis: Systemstopp erforderlich. */
	SYSTEM_STOP_REQUIRED("system_stop_required");

	/** Die Bezeichnung des Ereignisses. */
	private String name;

	/**
	 * Privater Konstruktor - Keine Instanziierung von aussen erlaubt
	 * (TypesafeEnum).
	 */
	private MASEvents(String name) {
		this.name = name;
	}

	/** Gibt die Bezeichnung des Ereignisses zurueck. */
	public String getName() {
		return name;
	}

}
